/**
 * @description 将后端返回的扁平数据转换成树行数据
 * @param {*} list 需要遍历的数据
 * @param {*} rootValue 最顶级的 pid
 * @returns Array
 */
export function transListToTree(list: any, rootValue: string) {
  // 最终需要返回的树行结构
  const treeData: any = []

  // 查找对应的子节点
  list.forEach((item: any) => {
    // 先判断是否是顶级
    if (item.pid === rootValue) {
      // 开始自己调用自己，查找对应的子级，父级关系：父.id === 子.pid
      // 因为本身返回的是一个函数，所以如果有子节点，就会返回一个数组
      const children = transListToTree(list, item.id)

      // 查看是否有子级，如果有子级就将子级赋值给当前的 item
      if (children.length) {
        item.children = children
      }

      // 将顶级的 item push 到 treeData 中
      treeData.push(item)
    }
  })

  // 调用该方法，将最终的树行结构数据返回
  return treeData
}
